package com.qfjy.controller.homeWork.yangchen;

import com.qfjy.controller.homeWork.yangchen.impl.Man;
import com.qfjy.controller.homeWork.yangchen.impl.ManDecorator;

/**
 * 装饰模式 替代继承，扩展一个类的功能
 *         动态的给一个对象添加功能，以及动态的撤销该功能
 *         优点：动态扩展一个实现类的功能，在不需要添加功能的时候，可以撤销装饰。
 *              装饰类和被装饰类模块间，通过抽象产生依赖，不会相互耦合
 *              装饰模式替换继承，可以避免继承链的子类被影响
 * @author yc
 * @date 2021/9/17 - 0:51
 */
public class Test {

    public static void main(String[] args) {
        //创建被装饰的类
        Human human = new Man();

        //创建装饰的类，并添加被装饰类对象
        Human superMan = new ManDecorator(human);

        //执行增强后的run方法
        superMan.run();

    }

}
